package hot

/*
原题链接:
https://leetcode.cn/problems/palindromic-substrings/description/

b站 书森学院
Hot 647.回文子串
给你一个字符串 s ，请你统计并返回这个字符串中 回文子串 的数目。
回文字符串 是正着读和倒过来读一样的字符串。
子字符串 是字符串中的由连续字符组成的一个序列。

具有不同开始位置或结束位置的子串，即使是由相同的字符组成，也会被视作不同的子串。

示例 1：
输入：s = "abc"
输出：3
解释：三个回文子串: "a", "b", "c"

示例 2：
输入：s = "aaa"
输出：6
解释：6个回文子串: "a", "a", "a", "aa", "aa", "aaa"
*/
//一刷

//一刷

func countSubstrings(s string) int {

	//1.获取字符串长度, 声明结果计数res
	n := len(s)
	res := 0

	for i := 0; i < n; i++ { //2.遍历每个字符
		left, right := i, i //3.以每个i索引为中心, 向两边扩散, 计算回文串个数
		for left >= 0 && right < n {
			if s[left] != s[right] {
				break
			}
			res++
			left--
			right++
		}

		left, right = i, i+1 //4.以i 和 i+1下标为中心, 向两边扩散, 计算回文串个数
		for left >= 0 && right < n {
			if s[left] != s[right] {
				break
			}
			res++
			left--
			right++
		}
	}

	return res
}
